package com.wqd.utils.thread;

import com.wqd.model.user.pojos.ApUser;

/**
 * 这段代码定义了一个工具类ApThreadLocalUtil，提供了三个静态方法来操作ThreadLocal类型的ApUser对象。
 *
 * ThreadLocal是一种线程封闭技术，它为每个线程创建了一个独立的变量副本，这样每个线程对自己的变量操作不会影响其他线程的变量。
 *
 * AP_USER_THREAD_LOCAL是一个ThreadLocal类型的ApUser对象，用于保存当前线程的ApUser对象。
 *
 * setUser方法用于往当前线程的AP_USER_THREAD_LOCAL变量中设置ApUser对象。
 *
 * getUser方法用于获取当前线程的AP_USER_THREAD_LOCAL变量中保存的ApUser对象。
 *
 * clear方法用于清除当前线程的AP_USER_THREAD_LOCAL变量中保存的ApUser对象。
 */
public class ApThreadLocalUtil {

    private final static ThreadLocal<ApUser> AP_USER_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 添加用户
     * @param apUser
     */
    public static void  setUser(ApUser apUser){
        AP_USER_THREAD_LOCAL.set(apUser);
    }

    /**
     * 获取用户
     */
    public static ApUser getUser(){
        return AP_USER_THREAD_LOCAL.get();
    }

    /**
     * 清理用户
     */
    public static void clear(){
        AP_USER_THREAD_LOCAL.remove();
    }
}